package br.com.dips.service;

import java.util.List;
import java.util.Map;

import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.inject.Inject;

import br.com.dips.dao.UsuarioDAO;
import br.com.dips.model.Usuario;
import br.com.dips.model.UsuarioOrganizacao;

@Stateless
public class UsuarioService {
	
	@Inject
	private UsuarioDAO dao;
	
	public Usuario incluir(Usuario usuario) {
		usuario = dao.incluir(usuario);
		return this.consultar(usuario.getId());
	}
	
	public Usuario alterar(Usuario usuario) {
		dao.alterar(usuario);
		return this.consultar(usuario.getId());
	}
	
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public Usuario consultar(Integer id) {
		Usuario usuario = dao.consultar(id);
		return usuario;
	}
	
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public List<Usuario> listar(int idOrg, int start, int pageSize, String sortField, String sortOrder, Map<String, String> filters) {
		return this.dao.listar(idOrg, start, pageSize, sortField, sortOrder, filters);
	}
	
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public int conta(Map<String, String> filters) {
		return this.dao.conta(filters);
	}
	
	@TransactionAttribute(TransactionAttributeType.SUPPORTS)
	public UsuarioOrganizacao autentica(Integer idOrganizacao, String nomeUsuario, String senha) {
		return this.dao.autentica(idOrganizacao, nomeUsuario, senha);
	}
	
}
